﻿
using System; 
using UnityEngine;

namespace XFGameFramework.TweenSystem
{
    /// <summary>
    ///  渐变动画实例(泛型)
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class TweenerCore<T> : Tweener
    {

        #region 字段 
        [Tooltip("当前的值")]
        private T _value;
        #endregion

        #region 属性

        internal T From { get; set; }

        internal T To { get; set; }

        /// <summary>
        /// 当前的值
        /// </summary>
        public T Value
        {
            get
            {
                return _value;
            }
            set
            { 
                _value = value;

                try
                {
                    onValueChange?.Invoke(this);
                }
                catch (Exception e)
                { 
                    Debug.LogException(e);
                }
                 
            }
        }

        #endregion

        #region 事件

        /// <summary>
        /// 值发生改变时触发的事件
        /// </summary>
        [Tooltip("值发生改变时触发的事件")]
        public Action<TweenerCore<T>> onValueChange;

        #endregion
  
    }
}
